package com.heima.leadnews.wemedia.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.wemedia.dto.WmMaterialDTO;
import com.heima.model.wemedia.dto.WmNewsDownOrUpDTO;
import com.heima.model.wemedia.dto.WmNewsPageDTO;
import com.heima.model.wemedia.dto.WmNewsSubmitDTO;
import com.heima.model.wemedia.pojo.WmNews;
import com.jlefebure.spring.boot.minio.MinioException;
import freemarker.template.TemplateException;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 自媒体图文内容信息表 服务类
 * </p>
 *
 * @author author
 * @since 2023-06-03
 */
@Service
public interface WmNewsService extends IService<WmNews> {

    /**
     * 条件分页查询频道信息
     *
     * @return
     */
    ResponseResult pager(WmNewsPageDTO dto);

    /**
     * 添加自媒体文章信息
     *
     * @param dto
     * @return
     */
    ResponseResult submit(WmNewsSubmitDTO dto) throws Exception;

    /**
     * 根据id查询文章信息
     *
     * @param id
     * @return
     */
    ResponseResult findById(Integer id);

    /**
     * 根据id删除文章信息
     *
     * @param id
     * @return
     */
    ResponseResult deleteById(Integer id);

    /**
     * 自动审核文章
     *
     * @param wmNews
     * @return
     */
    void autoScan(WmNews wmNews) throws Exception;

    /**
     * 查询自媒体文章表中状态为 8 ,并且发布时间小于当前时间的文章
     *
     * @param
     * @return
     */
    ResponseResult<List<WmNews>> findEnableNews();

    /**
     * 发布定时任务检测到的需要发布的文章。
     *
     * @param
     * @return
     */
    ResponseResult publish(WmNews wmNews) throws TemplateException, MinioException, IOException;

    /**
     * 根据id查询文章,忽略登陆人id验证，内部调用的接口
     * 供给发布文章微服务调用
     * @param id
     * @return
     */
    ResponseResult<WmNews> getNewsId(Integer id);

    /**
     * 自媒体文章的上下架。
     * @param
     * @return
     */
    ResponseResult downOrUp(WmNewsDownOrUpDTO dto);
}
